//
//  BHJProjectHelper.h
//  v8090Video
//
//  Created by 白华君 on 2018/6/27.
//  Copyright © 2018年 BlueWind. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
#import <Photos/Photos.h>

typedef void(^projectHelperLocationReturn)(CLLocation *location);

@interface BHJProjectHelper : NSObject

+(instancetype)shareHelper;

#pragma mark - 提示框



#pragma mark - 富文本操作

/**
 *  单纯改变一句话中的某些字的颜色（一种颜色）
 *
 *  @param color    需要改变成的颜色
 *  @param totalStr 总的字符串
 *  @param subArray 需要改变颜色的文字数组(要是有相同的 只取第一个)
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_changeCorlorWithColor:(UIColor *)color TotalString:(NSString *)totalStr SubStringArray:(NSArray *)subArray;
/**
 *  单纯改变句子的字间距（需要 <CoreText/CoreText.h>）
 *
 *  @param totalString 需要更改的字符串
 *  @param space       字间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_changeSpaceWithTotalString:(NSString *)totalString Space:(CGFloat)space;

/**
 *  单纯改变段落的行间距
 *
 *  @param totalString 需要更改的字符串
 *  @param lineSpace   行间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_changeLineSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace;

/**
 *  同时更改行间距和字间距
 *
 *  @param totalString 需要改变的字符串
 *  @param lineSpace   行间距
 *  @param textSpace   字间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_changeLineAndTextSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace textSpace:(CGFloat)textSpace;
/**
 *  改变某些文字的颜色 并单独设置其字体
 *
 *  @param font        设置的字体
 *  @param color       颜色
 *  @param totalString 总的字符串
 *  @param subArray    想要变色的字符数组
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_changeFontAndColor:(UIFont *)font Color:(UIColor *)color TotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray;

/**
 *  为某些文字改为链接形式
 *
 *  @param totalString 总的字符串
 *  @param subArray    需要改变颜色的文字数组(要是有相同的 只取第一个)
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)ls_addLinkWithTotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray;

#pragma mark - 选择相册相关API
/**
 *  获取相册的图片
 *
 *  @param result 获取到的图片
 *  @param error  失败信息
 */
+ (void)getSavedPhotoList:(void (^)(NSArray *))result error:(void (^)(NSError *))error;

/**
 *  获取asset中的image
 *
 *  @param asset       PSAsset
 *  @param size        尺寸
 *  @param completion  完成block
 *  @param synchronous 是否异步
 */
+ (void)generaImaeWithAsset:(PHAsset *)asset size:(CGSize)size completion:(void (^)(UIImage *))completion synchronous:(BOOL)synchronous;

/**
 *  获取Asset中的size
 *
 *  @param asset Asset
 *
 *  @return 得到的size
 */
+ (CGSize)getSizeFromAsset:(id)asset;

/**
 *  从asset中截取一定尺寸的图片
 *
 *  @param asset asset
 *  @param size  需要的尺寸
 *
 *  @return 得到的image
 */
+ (UIImage *)getThumImageFromAsset:(id)asset withSize:(CGSize)size;


/**
 判空

 @param obj 需要判空的对象
 @return 返回是否为空 
 */
+(BOOL)isNilOrNull:(id)obj;


/**
 将 view 变成 image
 
 @param view  需要改变的 view
 @return  得到的image
 */
+(UIImage*)imageFromView:(UIView*)view;

/**
 数据请求统一的格式：将数据请求的参数变成 json 字符串

 @param dic 需要的字典参数
 @param page 页码 当不需要传页码的时候传 -1
 @return 返回统一格式的 json 字符串
 */
+ (NSDictionary *)createDicWith:(NSDictionary *)dic AndPage:(NSInteger )page;


/**
 将时间戳变为时间

 @param timeStr 时间戳
 @param dateFormat 时间格式
 @return 时间
 */
+ (NSString *)ConvertStrToTime:(NSString *)timeStr dateFormat:(NSString *)dateFormat;

#pragma mark  视频
/**
 获取视频第一帧
 
 @param path 视频路径
 @return 返回image
 */
+ (UIImage*) getVideoPreViewImage:(NSURL *)path;
/**
 * @method
 *
 * @brief 根据路径获取视频时长和大小
 * @param path       视频路径
 * @return    字典    @"size"－－文件大小   @"duration"－－视频时长
 */
+(CGFloat)getVideoInfoWithSourcePath:(NSString *)path;


/**
 设置 image 的透明度

 @param alpha 透明度值
 @param image 哪一个 image
 @return 返回带有透明的image
 */
+ (UIImage *)imageByApplyingAlpha:(CGFloat)alpha
                            image:(UIImage*)image;



#pragma mark NSDate




/**
格式化当前时间

 @return 返回字符串当前时间
 */
+ (NSString *)stringWithTimeNowDate;
/**
 将时间字符串转为UTCDate

 @param localString 时间戳
 @return 返回NSData
 */
+(NSDate *)UTCDateFromLocalString:(NSString *)localString;


/**

 @param date NSDate时间格式
 @return NSString 格式化时间
 */
+ (NSString *)stringWithTimelineDate:(NSDate *)date;
#pragma mark - 短视频公共方法
/**
 播放视频增加积分
 */
+(void)playVideoAddIntegration:(NSInteger)type;
/**
 统计播放次数
 */
+(void)statisticsPlayCount:(NSString *)video_id;
/**
 统计分享数量
 */
+(void)theStatisticOfShare:(NSString *)video_id;

/**
 jsonString转字典

 @param jsonString jsonString
 @return return 字典
 */
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;

/**
 * 收藏
 */
+ (void)collectedVideo:(NSString *)video_id;
/**
 取消收藏
 */
+ (void)deleteCollectedVideo:(NSString *)video_id;

#pragma mark  资讯模块公共方法
// Label行间距与行高
+(NSMutableDictionary *)attributesWithLineHeight:(CGFloat )lineHeight
                          andLabelFontLineHeight:(CGFloat)fontLingHeight;


+(int)findNumFromStr:(NSString *)str;

#pragma mark -- YYImage

+(void)setImageView:(UIImageView *)imageView
        placeholder:(UIImage *)placeholder
            WithUrl:(NSURL *)url
          andRadius:(CGFloat )cradius
            andSize:(CGSize )size;

#pragma mark  提示
+ (void)showHUD:(NSString *)title;

#pragma mark  蒙版引导

+ (void)newUserGuide;

#pragma mark - 动画
extern void JumpAnimation (UIView *view ,NSTimeInterval duration,float height);


@end
